/*
 This file is part of Darling.

 Copyright (C) 2019 Lubos Dolezel

 Darling is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 Darling is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with Darling.  If not, see <http://www.gnu.org/licenses/>.
*/


#ifndef _Vision_H_
#define _Vision_H_

#import <Foundation/Foundation.h>

#import <Vision/MLFeatureProvider.h>
#import <Vision/VNClustererModelBuilding.h>
#import <Vision/VNClustererModelQuerying.h>
#import <Vision/VNClusteringCancelling.h>
#import <Vision/VNClusteringReadOnly.h>
#import <Vision/VNClusteringWritable.h>
#import <Vision/VNDetectorIdealImageSizeProviding.h>
#import <Vision/VNDetectorKeyProviding.h>
#import <Vision/VNFaceObservationAccepting.h>
#import <Vision/VNFaceObservationAcceptingInternal.h>
#import <Vision/VNImageBufferProviding.h>
#import <Vision/VNImageIdealImageSizeProviding.h>
#import <Vision/VNModelFile.h>
#import <Vision/VNOperationPointsProviding.h>
#import <Vision/VNPersonsModelDataDelegate.h>
#import <Vision/VNPersonsModelDataSource.h>
#import <Vision/VNPersonsModelFaceModelDataProvider.h>
#import <Vision/VNRequestCancelling.h>
#import <Vision/VNRequestProgressProviding.h>
#import <Vision/VNRequestRevisionProviding.h>
#import <Vision/VNRequestWarming.h>
#import <Vision/VNSequencedRequestSupporting.h>
#import <Vision/VNSerializing.h>
#import <Vision/VNSerializingInternal.h>
#import <Vision/VNTrackerProviding.h>
#import <Vision/VNWarningRecorder.h>
#import <Vision/VNANFDDetectorCompoundRequestConfiguration.h>
#import <Vision/VNANFDDetectorCompoundRequestConfigurationGroups.h>
#import <Vision/VNANFDDetectorCompoundRequest.h>
#import <Vision/CVML_Error.h>
#import <Vision/BurstActionClassifier.h>
#import <Vision/VNFaceAnalyzerMultiDetector.h>
#import <Vision/VNClusteringLogger.h>
#import <Vision/VNSuggestionsLogger.h>
#import <Vision/VNGreedyClusteringReadOnly.h>
#import <Vision/VNGreedyClusteringReadWrite.h>
#import <Vision/VNClustererContextBase.h>
#import <Vision/VNClustererReadOnlyContext.h>
#import <Vision/VNClustererReadWriteContext.h>
#import <Vision/VNImageprintGenerator.h>
#import <Vision/LKTMetalContext.h>
#import <Vision/_VNRequestForensicsRequestAndErrorTuple.h>
#import <Vision/_VNRequestForensicsRequestAndObservationsCacheKeyTuple.h>
#import <Vision/_VNRequestForensicsParentChildRequests.h>
#import <Vision/VNRequestForensics.h>
#import <Vision/VNAppendBurstSequenceFrameRequest.h>
#import <Vision/BurstFaceStat.h>
#import <Vision/BurstImageStat.h>
#import <Vision/VNFaceDetectorRevision2.h>
#import <Vision/BurstFaceConfigEntry.h>
#import <Vision/BurstFaceScoreEntry.h>
#import <Vision/BurstFaceInfo.h>
#import <Vision/BurstImageFaceAnalysisContext.h>
#import <Vision/VNHomographicImageRegistrationRequest.h>
#import <Vision/VNClassificationCustomHierarchy.h>
#import <Vision/_VNSceneClassifierClassificationCustomHierarchy.h>
#import <Vision/_VNImageAnalyzerMultiDetectorClassificationCustomHierarchy.h>
#import <Vision/VNRecognizeAnimalsRequest.h>
#import <Vision/VNFaceLandmarkRegion.h>
#import <Vision/VNFaceLandmarkRegion2D.h>
#import <Vision/VNFaceLandmarkRegion3D.h>
#import <Vision/VNFaceLandmarks.h>
#import <Vision/VNFaceLandmarks2D.h>
#import <Vision/VNFaceLandmarks3D.h>
#import <Vision/VNTrackingRequest.h>
#import <Vision/VNTranslationalImageRegistrationRequest.h>
#import <Vision/VNSequenceRequestHandler.h>
#import <Vision/VNImageRequestHandler.h>
#import <Vision/VNPhotosRequestHandler.h>
#import <Vision/VNDetectFaceLandmarksRequestConfiguration.h>
#import <Vision/VNDetectFaceLandmarksRequest.h>
#import <Vision/VNBlurSignature.h>
#import <Vision/VNBlurMeasure.h>
#import <Vision/VNRuntimeUtilities.h>
#import <Vision/VNANEProcessingDevice.h>
#import <Vision/VNCanceller.h>
#import <Vision/CCCharBoxContext.h>
#import <Vision/CCTextDetector.h>
#import <Vision/VNFaceLandmarkDetector.h>
#import <Vision/VNFaceRegionMap.h>
#import <Vision/VNGenerateObjectnessBasedSaliencyImageRequestConfiguration.h>
#import <Vision/VNGenerateObjectnessBasedSaliencyImageRequest.h>
#import <Vision/VNFaceAnalyzerCompoundRequestConfiguration.h>
#import <Vision/VNFaceAnalyzerCompoundRequestConfigurationGroups.h>
#import <Vision/VNFaceAnalyzerFaceObservationGrouping.h>
#import <Vision/VNFaceAnalyzerCompoundRequest.h>
#import <Vision/VNCreateTorsoprintRequest.h>
#import <Vision/VNImageBufferManager.h>
#import <Vision/VNImageSourceManager.h>
#import <Vision/VNImageBuffer.h>
#import <Vision/VNMutablePersonsModel.h>
#import <Vision/VNImageClassifier.h>
#import <Vision/VNRequest.h>
#import <Vision/VNSizeRange.h>
#import <Vision/VNSupportedImageSize.h>
#import <Vision/VNRequestConfiguration.h>
#import <Vision/VNBlacklist.h>
#import <Vision/VNFaceTorsoprint.h>
#import <Vision/VNGenerateObjectnessBasedSaliencyDetector.h>
#import <Vision/VNGenerateObjectnessBasedSaliency544x544Detector.h>
#import <Vision/VNOpticalFlowObservation.h>
#import <Vision/VNFaceDetectorRevision1.h>
#import <Vision/VNGenerateAttentionBasedSaliencyImageRequestConfiguration.h>
#import <Vision/VNGenerateAttentionBasedSaliencyImageRequest.h>
#import <Vision/SaliencyExtrema.h>
#import <Vision/VNSaliencyImageObservation.h>
#import <Vision/VNImageSaliencyObservation.h>
#import <Vision/VNEspressoDetectedObject.h>
#import <Vision/VNImageSpecifier.h>
#import <Vision/_VNPixelBufferSpecifier.h>
#import <Vision/_VNCGImageSpecifier.h>
#import <Vision/_VNCIImageSpecifier.h>
#import <Vision/_VNURLImageSpecifier.h>
#import <Vision/_VNDataImageSpecifier.h>
#import <Vision/VNFaceprint.h>
#import <Vision/VNFaceExpressionDetector.h>
#import <Vision/VNANFDMultiDetectorOriginalRequestInfo.h>
#import <Vision/VNANFDMultiDetector.h>
#import <Vision/VNClassifyImageAestheticsRequestConfiguration.h>
#import <Vision/VNClassifyImageAestheticsRequest.h>
#import <Vision/VNRectangleTracker.h>
#import <Vision/VNBurstAnalysisResultsRequestConfiguration.h>
#import <Vision/VNBurstAnalysisResultsRequest.h>
#import <Vision/VNFaceprintGeneratorRevision1.h>
#import <Vision/VNMomentProcessor.h>
#import <Vision/VNMPClusteringTreeNodeWrapper.h>
#import <Vision/VNSmartCamClassifier.h>
#import <Vision/VNCompoundRequest.h>
#import <Vision/VNUniqueObservationClassCompoundRequest.h>
#import <Vision/VNHomologousObservationClassCompoundRequest.h>
#import <Vision/VNRPNTrackerEspressoModelCacheManager.h>
#import <Vision/VNObjectTrackerRevision2.h>
#import <Vision/VNMetalContext.h>
#import <Vision/VNDetector.h>
#import <Vision/VNSceneprint.h>
#import <Vision/VNSceneFeaturePrint.h>
#import <Vision/BurstClusterDivider.h>
#import <Vision/_VNPersonsModelDataSourceBasedDataProvider.h>
#import <Vision/VNPersonsModel.h>
#import <Vision/VNPersonsModelInformation.h>
#import <Vision/VNPersonsModelConfiguration.h>
#import <Vision/VNPersonsModelPrediction.h>
#import <Vision/VNPersonsModelReadOptions.h>
#import <Vision/VNPersonsModelWriteOptions.h>
#import <Vision/VNClassifyImageRequestConfiguration.h>
#import <Vision/VNClassifyImageRequest.h>
#import <Vision/VNImageGrouper.h>
#import <Vision/VNFaceAttributeCategory.h>
#import <Vision/VNFaceAttributes.h>
#import <Vision/VNImageRegistrationRequest.h>
#import <Vision/VNMPImageDescriptor.h>
#import <Vision/VNObjectTrackerRevision1.h>
#import <Vision/VNWarningRecorder.h>
#import <Vision/VNOperationPointsProvider.h>
#import <Vision/VNSmartCamprint.h>
#import <Vision/VNMPImageQuality.h>
#import <Vision/VNMPUtils.h>
#import <Vision/VNFaceSegmentGenerator.h>
#import <Vision/VNSingleHeadSceneprintGenerator.h>
#import <Vision/ShotflowDetector.h>
#import <Vision/ShotflowDetectorANFDv1.h>
#import <Vision/ShotflowDetectorANFDv2.h>
#import <Vision/VNClassifyJunkImageRequestConfiguration.h>
#import <Vision/VNClassifyJunkImageRequest.h>
#import <Vision/VNDetectHumanHeadRectanglesRequest.h>
#import <Vision/VNEspressoModelClassifier.h>
#import <Vision/VNFaceGeometryEstimator.h>
#import <Vision/VNBarcodeObservation.h>
#import <Vision/VNDetectBarcodesRequest.h>
#import <Vision/VNDetectBarcodesRequestConfiguration.h>
#import <Vision/VNTrackerManager.h>
#import <Vision/ANFDDetectedObject.h>
#import <Vision/VNMPImageData.h>
#import <Vision/VNNOPRequestConfiguration.h>
#import <Vision/VNNOPRequest.h>
#import <Vision/VNObservation.h>
#import <Vision/VNDetectedObjectObservation.h>
#import <Vision/VNFaceObservation.h>
#import <Vision/VNImageAlignmentObservation.h>
#import <Vision/VNImageTranslationAlignmentObservation.h>
#import <Vision/VNImageHomographicAlignmentObservation.h>
#import <Vision/VNImageScoreObservation.h>
#import <Vision/VNImageprintObservation.h>
#import <Vision/VNImageBlurObservation.h>
#import <Vision/VNImageBrightnessObservation.h>
#import <Vision/VNClassificationObservation.h>
#import <Vision/VNRecognizedObjectObservation.h>
#import <Vision/VNCoreMLFeatureValueObservation.h>
#import <Vision/VNPixelBufferObservation.h>
#import <Vision/VNRectangleObservation.h>
#import <Vision/VNHorizonObservation.h>
#import <Vision/VNCluster.h>
#import <Vision/VNClusterObservation.h>
#import <Vision/VNFeaturePrintObservation.h>
#import <Vision/VNSceneObservation.h>
#import <Vision/VNSmartCamObservation.h>
#import <Vision/VNBurstObservation.h>
#import <Vision/VNRecognizedTextObservation.h>
#import <Vision/_VNTextObservationCharacterBox.h>
#import <Vision/VNTextObservation.h>
#import <Vision/VNFaceBBoxAligner.h>
#import <Vision/VNTargetedImageRequest.h>
#import <Vision/VNImageprint.h>
#import <Vision/VNMetalProcessingDevice.h>
#import <Vision/VNPersonsModelData.h>
#import <Vision/VNEspressoModelImageprint.h>
#import <Vision/VNImageAestheticsObservation.h>
#import <Vision/VNGroupImagesByTimeAndContentRequest.h>
#import <Vision/VNError.h>
#import <Vision/VNImageBasedRequestConfiguration.h>
#import <Vision/VNImageBasedRequest.h>
#import <Vision/VNANERuntimeDirectProcessingDevice.h>
#import <Vision/VNSaliencyHeatmapBoundingBoxGenerator.h>
#import <Vision/VNVersionParser.h>
#import <Vision/VNOperationPoints.h>
#import <Vision/_VNUnspecifiedOperationPoints.h>
#import <Vision/VNGenerateImageSaliencyRequestConfiguration.h>
#import <Vision/VNGenerateImageSaliencyRequest.h>
#import <Vision/VNCVPixelBufferConversionHelpers.h>
#import <Vision/VNClassifyFaceAttributesRequest.h>
#import <Vision/VNDetectHumanRectanglesRequest.h>
#import <Vision/VNDetectFace3DLandmarksRequest.h>
#import <Vision/VNHeatMapExtrema.h>
#import <Vision/VNHeatMapUtilities.h>
#import <Vision/VNPersonsModelFaceModel.h>
#import <Vision/VNMPImageGrouping.h>
#import <Vision/VNFaceLandmarkDetectorDNN.h>
#import <Vision/BurstImageSetInternal.h>
#import <Vision/VNImageAnalyzerCompoundRequestGroupingConfiguration.h>
#import <Vision/VNImageAnalyzerCompoundRequestGroupingConfigurations.h>
#import <Vision/VNImageAnalyzerCompoundRequestConfiguration.h>
#import <Vision/VNImageAnalyzerCompoundRequest.h>
#import <Vision/VNClassifyPipelineImageCorrectionNeed1Request.h>
#import <Vision/VNDetectFacePoseRequest.h>
#import <Vision/VNEspressoResources.h>
#import <Vision/VNEspressoHelpers.h>
#import <Vision/VNFaceQualityGenerator.h>
#import <Vision/ImageProcessing_CoreImageUtils.h>
#import <Vision/VNDetectorManager.h>
#import <Vision/VNImageBlurScoreRequestConfiguration.h>
#import <Vision/VNImageBlurScoreRequest.h>
#import <Vision/LKTGPU.h>
#import <Vision/VNCPUProcessingDevice.h>
#import <Vision/VNCreateImageprintRequestConfiguration.h>
#import <Vision/VNCreateImageprintRequest.h>
#import <Vision/VNValidationUtilities.h>
#import <Vision/VNTorsoprintGenerator.h>
#import <Vision/CVMLFaceprint_LegacySupportDoNotChange.h>
#import <Vision/CVMLObservation_LegacySupportDoNotChange.h>
#import <Vision/CVMLImageprintObservation_LegacySupportDoNotChange.h>
#import <Vision/MPImageDescriptor_LegacySupportDoNotChange.h>
#import <Vision/VNFaceLandmarkDetectorRevision1.h>
#import <Vision/VNTorsoprint.h>
#import <Vision/VNMLFeatureProvider.h>
#import <Vision/VNCoreMLModel.h>
#import <Vision/VNCoreMLTransformer.h>
#import <Vision/VNFaceDetector.h>
#import <Vision/VNRectangleDetector.h>
#import <Vision/VNJunkIdentifier.h>
#import <Vision/VNFaceSegments.h>
#import <Vision/VNRecognizeTextRequestConfiguration.h>
#import <Vision/VNRecognizeTextRequest.h>
#import <Vision/VNRecognizedText.h>
#import <Vision/VNObjectTracker.h>
#import <Vision/VNFaceRegionMapGenerator.h>
#import <Vision/VNHorizonDetector.h>
#import <Vision/BurstThumbnailCluster.h>
#import <Vision/VNGenerateFaceSegmentsRequestConfiguration.h>
#import <Vision/VNGenerateFaceSegmentsRequest.h>
#import <Vision/VNDetectAnimalRectanglesRequest.h>
#import <Vision/VNBurstContext.h>
#import <Vision/VNDetectFaceCaptureQualityRequest.h>
#import <Vision/VNModelFileImpl.h>
#import <Vision/VNModelFilesCache.h>
#import <Vision/VNDebugHelpers.h>
#import <Vision/VNImageAnalyzerMultiDetector.h>
#import <Vision/_VNImageAnalyzerMultiDetectorSceneOperationPointsCache.h>
#import <Vision/_VNImageAnalyzerMultiDetectorSceneOperationPointsProvider.h>
#import <Vision/VNCreateSmartCamprintRequestConfiguration.h>
#import <Vision/VNCreateSmartCamprintRequest.h>
#import <Vision/VNFaceprintGenerator.h>
#import <Vision/VNCreateSceneprintRequestConfiguration.h>
#import <Vision/VNCreateSceneprintRequest.h>
#import <Vision/VNObservationsCache.h>
#import <Vision/VNDetectRectanglesRequestConfiguration.h>
#import <Vision/VNDetectRectanglesRequest.h>
#import <Vision/VNEspressoModelFileBasedDetector.h>
#import <Vision/VNDetectHorizonRequest.h>
#import <Vision/VNReadOnlyPersonsModel.h>
#import <Vision/VNDetectTextRectanglesRequestConfiguration.h>
#import <Vision/VNDetectTextRectanglesRequest.h>
#import <Vision/ShotflowDetection.h>
#import <Vision/VNDetectFaceRectanglesRequest.h>
#import <Vision/VNRequestPerformer.h>
#import <Vision/VNMPContext.h>
#import <Vision/VNIdentifyJunkRequest.h>
#import <Vision/VNSceneClassificationRequestConfiguration.h>
#import <Vision/VNSceneClassificationRequest.h>
#import <Vision/VNCoreMLRequestConfiguration.h>
#import <Vision/VNCoreMLRequest.h>
#import <Vision/VNAlignFaceRectangleRequestConfiguration.h>
#import <Vision/VNAlignFaceRectangleRequest.h>
#import <Vision/VNClustererOptions.h>
#import <Vision/VNClustererQueryOptions.h>
#import <Vision/VNClustererBuilderOptions.h>
#import <Vision/VNClustererQuery.h>
#import <Vision/VNClustererBuilder.h>
#import <Vision/VNProcessingDevice.h>
#import <Vision/VNSceneClassifier.h>
#import <Vision/VNGenerateImageFeaturePrintRequestConfiguration.h>
#import <Vision/VNGenerateImageFeaturePrintRequest.h>
#import <Vision/VNCreateFaceRegionMapRequest.h>
#import <Vision/VNSceneTaxonomyOperationPoints.h>
#import <Vision/ShotflowNetwork.h>
#import <Vision/ShotflowNetworkANFDv1.h>
#import <Vision/ShotflowNetworkANFDv2.h>
#import <Vision/VNFaceLandmarkDetectorRevision3.h>
#import <Vision/VNBrightnessMeasure.h>
#import <Vision/VNCreateFaceTorsoprintRequest.h>
#import <Vision/VNFaceLandmarkDetectorRevision2.h>
#import <Vision/VNTrackRectangleRequest.h>
#import <Vision/VNTrackObjectRequest.h>
#import <Vision/VNCreateFaceprintRequestConfiguration.h>
#import <Vision/VNCreateFaceprintRequest.h>
#import <Vision/VNTracker.h>
#import <Vision/VNImageExposureScoreRequest.h>
#import <Vision/VNSmartCamCombinedAestheticsAndSaliencyDetector.h>
#import <Vision/VNGenerateOpticalFlowRequest.h>
#import <Vision/VNANERuntimeProcessingDevice.h>
#import <Vision/VNRequestPerformingContext.h>
#import <Vision/VNDetectFaceExpressionsRequest.h>
#import <Vision/VNMPImageSharpness.h>
#import <Vision/VNImageRegistrationSignature.h>
#import <Vision/VNImageRegistration.h>

void* CCRectLowLevel(void);
void* VNCropAndScaleFromURLToPixelBuffers(void);
void* VNCropAndScalePixelBufferToPixelBuffers(void);
void* VNElementCountForScenePrintRequestRevision(void);
void* VNElementTypeSize(void);
void* VNImagePointForFaceLandmarkPoint(void);
void* VNImagePointForNormalizedPoint(void);
void* VNImageRectForNormalizedRect(void);
void* VNIntersectionOverUnion(void);
void* VNLargestCentralSquareOfRect(void);
void* VNLengthInBytesForScenePrintRequestRevision(void);
void* VNNormalizedFaceBoundingBoxPointForLandmarkPoint(void);
void* VNNormalizedImageRectForNormalizedRegionOfInterestRect(void);
void* VNNormalizedRectForImageRect(void);
void* VNNormalizedRectIsIdentityRect(void);
void* VNScenePrintsFromPixelBuffers(void);
void* VNScenePrintsFromPixelBuffersUsesCPUOnly(void);
void* VNScenePrintsFromURL(void);
void* VNScenePrintsFromURLUsesCPUOnly(void);
void* VNSceneprintSupportedRevisions(void);
void* VNVerticallyFlippedNormalizedPoint(void);
void* VNVerticallyFlippedNormalizedRect(void);
void* createPerMeshForFFTSIZE(void);
void* horizonDetectionFFT(void);
void* horizonDetectionFFTAngles(void);
void* initializePerMesh(void);

#endif
